1. Field of the Invention
The present invention relates to an information processing device and an image processing apparatus that provide a function of an application by operating an input unit, a processing unit, and an output unit in conjunction with each other.
2. Description of the Related Art
In these years, image processing apparatuses such as MFPs (Multifunction Peripherals) include printer, copier, scanner and facsimile functions in one physical body and, despite limited memory capacity, have a CPU (Central Processing Unit) similar to that of general purpose computers to provide these functions by software application control.
For example, Japanese Patent Registration No. 3679349 (also published as Japanese Patent Laid-Open Publication No. 2002-084383) discloses an image processing apparatus in which a platform includes a function shared by different applications. These applications can be implemented using an API (Application Programming Interface) for the platform. Since this image processing apparatus is provided with the platform that includes the function shared by the different applications, there is no need to include the shared function in each application. Therefore, it is possible to improve the efficiency in developing the applications.
Thus, this image processing apparatus offers a function desired by a user by adding an application to its system or extending an application in the system.
Currently, the Java (trademark) language of Sun Microsystems, Inc. is used for function development of some of such image processing apparatuses. The Java language is independent from the installation environment (the type of machines into which a function is installed) and therefore is used for development of mobile phones and home appliances as well. Some image processing apparatuses use a process-based UNIX (trademark)-based OS (Operating System), which can split a process into multiple processes, in implementation environments.
However, the following points need to be taken into account for these image processing apparatuses.
The first is the system robustness. Highly-extensible image processing apparatuses may execute applications that are developed in various environments, such as a self-developed application that offers basic functions of the system and an application that is developed by another company (hereinafter referred to as “a third-party vendor”) and is installed later to offer an extended function.
These image processing apparatuses need to prevent basic functions of the system from failing due to installation of the extended function.
In process-based OSs, it is common to split a process into processes of appropriate sizes to improve the system robustness. However, in the case where the Java language is used for development, plural applications are executed in a single process (JVM (Java Virtual Machine)), and therefore it is not practical to split the process (JVM) into too many processes (JVMs). The JVM needs to be split into at least a JVM for executing the self-developed application and a JVM for executing the third-party vendor application.
As for the robustness of the Java language based system, consideration needs to be given to execution of Native code and memory use. Execution of malicious Native code may cause a crash of the entire system (i.e., terminate the entire system abnormally). An application using a large amount of memory may occupy the Java heap and cause an OutOfMemoryError.
The second is the easiness of application development. In the case of splitting a system into plural JVMs, it is necessary to minimize the number of components that are to be affected by the multi-process architecture.
For customizable systems, application development using a SDK (Software Development Kit) needs to be easy, and it is necessary to allow applications to be developed without a need to consider that the applications are to run on plural JVMs.
That is, it is necessary to consider a design in which limited components (software parts) corresponding to a framework are affected by multi-process architecture such that applications can be developed without a need to consider the multi-process architecture.